AdaBoost基本原理与算法描述

一. 前言

最近在看集成学习方法,前面已经对XGBoost的原理简单实践做了介绍,这次对AdaBoost算法做个学习笔记,来巩固自己所学的知识,同时也希望对需要帮助的人有所帮助。

关于集成学习主要有两大分支,一种是bagging方法,一种是boosting方法。

bagging方法的弱学习器之间没有依赖关系,各个学习器可以并行生成,最终通过某种策略进行集成得到强学习器(比如回归问题用所有弱学习器输出值的平均值作为预测值;分类问题使用投票法,即少数服从多数的方法来得到最终的预测值;也可以使用学习法,即每个弱学习器的输出值作为训练数据来重新学习一个学习器,而该学习器的输出值作为最终的预测值,代表方法有stacking方法,感兴趣的同学可以自己去了解一下)。bagging方法采用自助采样法,即在总样本中随机的选取m个样本点作为样本m1,然后放回,继续随机选取m个样本点作为样本m2,如此循环下去直到选取的样本个数达到预设定值n,对这n个样本进行学习,生成n个弱学习器。随机森林算法就是bagging方法的代表算法。

boosting方法的若学习器之间有强的依赖关系,各个弱学习器之间串行生成。它的工作机制是初始给每个样本赋予一个权重值(初始权重值一般是1/m,m表示有m个样本),然后训练第一个弱学习器,根据该弱学习器的学习误差率来更新权重值,使得该学习器中的误差率高的训练样本点(所有的训练样本点)的权重值变高,权重值高的训练样本点在后面的弱学习器中会得到更多的重视,以此方法来依次学习各个弱学习器,直到弱学习器的数量达到预先指定的值为止,最后通过某种策略将这些弱学习器进行整合,得到最终的强学习器。boosting方法的代表算法有AdaBoost和boosting tree算法,而AdaBoost算法就是本文接下来要介绍的算法。

在介绍AdaBoost之前,要先搞清楚boosting系列算法主要解决的一些问题,如下:

  • 弱学习器的权重系数\alpha如何计算?
  • 样本点的权重系数w如何更新?
  • 学习的误差率e如何计算?
  • 最后使用的结合策略是什么?

下面我们就来看看AdaBoost是如何解决以上问题的。

二. AdaBoost基本原理介绍

2.1 AdaBoost分类问题

以二分类为例,假设给定一个二类分类的训练数据集\chi = \left \{ (x_{1}, y_{1}), (x_{2}, y_{2}),...,(x_{n}, y_{n})\right \},其中x_{i}表示样本点,y_{i}表示样本对应的类别,其可取值为{-1,1}。AdaBoost算法利用如下的算法,从训练数据中串行的学习一系列的弱学习器,并将这些弱学习器线性组合为一个强学习器。AdaBoost算法描述如下:

输入:训练数据集\chi = \left \{ (x_{1}, y_{1}), (x_{2}, y_{2}),...,(x_{n}, y_{n})\right \}

输出:最终的强分类器G(x)

(1) 初始化训练数据的权重分布值:(D_{m} 表示第m个弱学习器的样本点的权值)

               D_{1}=(w_{11},...,w_{1i},...,w_{1N}),       w_{1i}=1/N,     i=1,2,...,N

(2) 对M个弱学习器,m=1,2,...,M:

(a)使用具有权值分布D{_{m}}的训练数据集进行学习,得到基本分类器 G{_{m}}(x) ,其输出值为{-1,1};

(b)计算弱分类器G{_{m}}(x)在训练数据集上的分类误差率e{_{m}},其值越小的基分类器在最终分类器中的作用越大。

                        

                        其中,I(G{_{m}}(x{_{i}})\neq y{_{i}})取值为0或1,取0表示分类正确,取1表示分类错误。

(c)计算弱分类器G{_{m}}(x)的权重系数\alpha {_{m}}:(这里的对数是自然对数)

               \alpha {_{m}}=\frac{1}{2}ln{\frac{1-e{_{m}}}{e{_{m}}}}

一般情况下e{_{m}}的取值应该小于0.5,因为若不进行学习随机分类的话,由于是二分类错误率等于0.5,当进行学习的时候,错误率应该略低于0.5。当e{_{m}}减小的时候\alpha {_{m}}的值增大,而我们希望得到的是分类误差率越小的弱分类器的权值越大,对最终的预测产生的影响也就越大,所以将弱分类器的权值设为该方程式从直观上来说是合理地,具体的证明\alpha {_{m}}为上式请继续往下读。

(d)更新训练数据集的样本权值分布:

                        

对于二分类,弱分类器G{_{m}}(x)的输出值取值为{-1,1},y{_{i}}的取值为{-1,1},所以对于正确的分类 y{_{i}}G{_{m}}(x)>0,对于错误的分类y{_{i}}G{_{m}}(x)<0,由于样本权重值在[0,1]之间,当分类正确时w{_{m+1,i}}取值较小,而分类错误时w{_{m+1,i}}取值较大,而我们希望得到的是权重值高的训练样本点在后面的弱学习器中会得到更多的重视,所以该上式从直观上感觉也是合理地,具体怎样合理,请往下读。

                  其中,Z{_{m}}是规范化因子,主要作用是将W{_{mi}}的值规范到0-1之间,使得\sum_{i=1}^{N}{W{_{mi}}} = 1

                       

(3) 上面我们介绍了弱学习器的权重系数α如何计算,样本的权重系数W如何更新,学习的误差率e如何计算,接下来是最后一个问题,各个弱学习器采用何种结合策略了,AdaBoost对于分类问题的结合策略是加权平均法。如下,利用加权平均法构建基本分类器的线性组合:

               f(x)=\sum_{m=1}^{M}{\alpha {_{m}}G{_{m}}(x)}

     得到最终的分类器:

              

  • 23
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值